package com.fourforfo.fourmall.ware.service.impl;

import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fourforfo.common.utils.PageUtils;
import com.fourforfo.common.utils.Query;

import com.fourforfo.fourmall.ware.dao.WareInfoDao;
import com.fourforfo.fourmall.ware.entity.WareInfoEntity;
import com.fourforfo.fourmall.ware.service.WareInfoService;


@Service("wareInfoService")
public class WareInfoServiceImpl extends ServiceImpl<WareInfoDao, WareInfoEntity> implements WareInfoService {

    @Override
    public PageUtils queryPage(Map<String, Object> params) {

        QueryWrapper<WareInfoEntity> queryWrapper = new QueryWrapper<>();
        String key = (String) params.get("key");
        if(!StringUtils.isEmpty(key)){
            queryWrapper.eq("id",key)
                    .or().like("name",key)
                    .or().like("address",key)
                    .or().like("areacode",key);
        }
        IPage<WareInfoEntity> page = this.page(
                new Query<WareInfoEntity>().getPage(params),
                queryWrapper
        );
        return new PageUtils(page);
    }

    @Override
    public BigDecimal getFare(Long addrId) {
        //根据地址id计算运费运费
        //TODO 需要设计一个完整的物流服务才行，否则无法计算各地直接的物流运费
        //1.根据地址id远程获取用户地址信息
        //2.获取各商品的仓库信息，需要传入商品项id
        //3.简单判断，如果收货地址与商品所在仓库在同一个省，则该商品的运费为6块，不在同一个省则为12块

        /**
         * 就算是简单判断都较为繁琐，所以简单返回一下，如果addrId为奇数则返回6块，为偶数则返回12块
         */
        return addrId%2==0?new BigDecimal(12):new BigDecimal(6);
    }

}